package priority_queue_for_heap;

/**
 * 比较版本号
 */
public class ComparisonVersionNum {
    public static int compareVersion(String version1, String version2) {
        // 字符串分割做法
//        String[] arr1 = version1.split("\\.");
//        String[] arr2 = version2.split("\\.");
//        int len = Math.min(arr1.length, arr2.length);
//        int ret = 0;
//        for (int i = 0; i < len; i++) {
//            long num1 = Long.parseLong(arr1[i]);
//            long num2 = Long.parseLong(arr2[i]);
//            if (num1 == num2) {
//                continue;
//            } else if (num1 > num2) {
//                ret = 1;
//                break;
//            } else {
//                ret = -1;
//                break;
//            }
//        }
//        if (ret == 0) {
//            int mLen = Math.max(arr1.length, arr2.length);
//            if (arr1.length > arr2.length) {
//                for (int i = len; i < mLen; i++) {
//                    if (Long.parseLong(arr1[i]) != 0) {
//                        ret = 1;
//                        break;
//                    }
//                }
//            } else {
//                for (int i = len; i < mLen; i++) {
//                    if (Long.parseLong(arr2[i]) != 0) {
//                        ret = -1;
//                        break;
//                    }
//                }
//            }
//        }
//        return ret;

        // 双指针
        int i = 0, j = 0;
        int len1 = version1.length();
        int len2 = version2.length();
        int ret = 0;
        while (i < len1 || j < len2) {
            long n1 = 0, n2 = 0;
            while (i < len1 && version1.charAt(i) != '.') {
                n1 += n1 * 10 + Character.getNumericValue(version1.charAt(i ++));
            }
            while (j < len2 && version2.charAt(j) != '.') {
                n2 += n2 * 10 + Character.getNumericValue(version2.charAt(j ++));
            }
            if (n1 > n2) {
                ret = 1;
                break;
            } else if (n1 < n2) {
                ret = -1;
                break;
            }
            i ++;
            j ++;
        }
        return ret;
    }

    public static void main(String[] args) {
        System.out.println(compareVersion("0.1", "1.1"));
    }
}
